洛谷题解 P3955 【图书管理员】

看了下面一堆大佬的代码,感觉好麻烦,其实无需排序直接对每一次询问进行比较就好了(反正数据不大,用不上字符串)。

附代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<iostream>
using namespace std;
int n,q,nl[1001],ql[1001],qsl[1001];/*n为图书馆里书的数量,q为读者的数量,nl是书的编码,ql是询问的编码,qsl是询问的编码的长度*/
int main()
{
cin>>n>>q;/*输入*/
for(int a=1;a<=n;a++)
{
cin>>nl[a];/*读入书的编码*/
}
for(int a=1;a<=q;a++)
{
int ans=-1,k=1;
cin>>qsl[a];/*读入询问编码的长度*/
cin>>ql[a];/*读入询问的编码*/
for(int c=1;c<=qsl[a];c++)/*处理比较的数位*/
{
k=k*10;
}
for(int b=1;b<=n;b++)/*逐书比较*/
{
if(nl[b]%k==ql[a])/*取书的编码的末qsl[a]位与询问编码比较*/
{
if(ans==-1||(ans>nl[b]))/*判断是否未找到或是否比已找到的小*/
{
ans=nl[b];/*读入已知书编码最小值*/
}
}
}
cout<<ans<<endl;/*输出*/
}
}

题目详见:https://www.luogu.org/problemnew/show/P3955